并发储备知识
并发储备知识
背景知识
引入:
# 何为进程?
顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。
好像还是不明白?
比如使用qq,qq从硬盘中加载到了内存, cpu 去内存中取qq的指令去运行。这就是进程。那什么是进程结束了?qq运行完了我退出了qq,要从内存中释放了qq这段代码,这就是结束了进程。
那比如我启动了很多个程序,用进程进行描述会更方便统计。
思考:一个正在运行的程序怎么就叫运行起来了?
一个正在运行的程序怎么就叫运行起来了,是由操作系统发送指令给cpu再发送指令程序从硬盘加载到了内存,也是由操作系统发送指令控制cpu去内存中取值运行,整个过程都归操作系控制的。
而进程的概念是起源于操作系统的,是操作系统最核心的概念,操作系统所有其他的概念都是围绕进程展开的。
要了解进程,有必要了解一下操作系统的前世今生。操作系统发展史
PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用和空间多路复用+硬件上支持隔离),没有进程的抽象,现代计算机将不复存在。
必备的理论基础:
#一 操作系统的作用:
1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口
2:管理、调度进程,并且将多个进程对硬件的竞争变得有序
#二 多道技术:
1.产生背景:针对单核,实现并发
2.空间上的复用:如内存中同时有多道程序
3.时间上的复用:复用一个cpu的时间片
强调:遇到io切,占用cpu时间过长也切,核心在于切之前将进程的状态保存下来,这样
才能保证下次切换回来时,能基于上次切走的位置继续运行
#三 现代计算机:
现在的主机一般是多核,那么每个核都会利用多道技术
有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束再重新调度,会被调度到4个
cpu中的任意一个,具体由操作系统调度算法决定。
# 1、串行:
一个任务完完整整地运行完毕后,才能运行下一个任务
# 2、并发
看起来多个任务是同时运行的即可,单核也可以实现并发
# 3、并行:
真正意义上多个任务的同时运行,只有多核才实现并行